import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  // 提供唯一公共数据源，所有共享的数据都要统一放到store中的state进行存储
  state: {
    count: 0
  },

  // 用于变更store中的数据，可以携带参数
  // mutations不能写异步代码
  // 只有mutations中的函数才有权利修改state中的数据
  mutations: {
    add (state, step) {
      state.count += step
    },
    sub (state, step) {
      state.count -= step
    }
  },
  actions: {
    addAsync (context, step) {
      setTimeout(() => {
        // 在actions中不能直接修改state中的数据
        // 必须通过context.commit()触发某个mutation才行
        context.commit('add', step)
      }, 1000)
    },
    subAsync (context, step) {
      setTimeout(() => {
        context.commit('sub', step)
      }, 1000)
    }
  },
  getters: {
    showNum (state) {
      return '当前数量：' + state.count + 'sdaaas'
    }
  },
  modules: {}
})
